home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / x11perfcomp < prev    next >
Text File  |  2009-07-28  |  3KB  |  105 lines

  1. #! /bin/sh
  2. #
  3. # $XFree86$
  4. #
  5. # Collects multiple outputs of x11perf.  Just feed it a list of files, each
  6. # containing the output from an x11perf run, and this shell will extract the
  7. # object/second information and show it in tabular form.  An 80-column line
  8. # is big enough to compare 4 different servers.
  9. #
  10. # This script normally uses the results from $1 to extract the test label
  11. # descriptions, so you can run x11perf on a subset of the test and then
  12. # compare the results.  But note that x11perffill requires the labels file
  13. # to be a superset of the x11perf results file.  If you run into an ugly
  14. # situation in which none of the servers completes the desired tests 
  15. # (quite possible on non-DEC servers :), you can use -l <filename> as $1 and
  16. # $2 to force x11perfcomp to use the labels stored in file $2.  (You can run
  17. # x11perf with the -labels option to generate such a file.)
  18. #
  19. # Mark Moraes, University of Toronto <moraes@csri.toronto.edu>
  20. # Joel McCormack, DEC Western Research Lab <joel@decwrl.dec.com>
  21. #
  22. # $Xorg: x11pcomp.cpp,v 1.3 2000/08/17 19:54:10 cpqbld Exp $
  23.  
  24. PATH=/usr/lib/X11/x11perfcomp:.:$PATH
  25. export PATH
  26.  
  27. set -e
  28. tmp=${TMPDIR-/tmp}/rates.$$
  29. trap "rm -rf $tmp" 0 1 2 15
  30. mkdir $tmp || exit 1
  31. mkdir $tmp/rates
  32. ratio=
  33. allfiles=
  34. # Include relative rates in output?  Report only relative rates?
  35. case $1 in
  36. -r|-a)
  37.     ratio=1
  38.     shift;
  39.     ;;
  40. -ro)
  41.     ratio=2
  42.     shift;
  43.     ;;
  44. esac
  45. # Get either the provided label file, or construct one from all the
  46. # files given.
  47. case $1 in
  48. -l)    cp $2 $tmp/labels
  49.     shift; shift
  50.     ;;
  51. *)    for file in "$@"; do
  52.         awk '$2 == "reps" || $2 == "trep" { print $0; next; }' $file |
  53.          sed 's/^.*: //' |
  54.          sed 's/ /_/g' |
  55.          awk 'NR > 1     { printf ("%s %s\n", prev, $0); } \
  56.                 { prev = $0; }'
  57.     done | tsort 2>/dev/null | sed 's/_/ /g' > $tmp/labels
  58.     ;;
  59. esac
  60. # Go through all files, and create a corresponding rate file for each
  61. n=1
  62. for i
  63. do
  64. # Get lines with average numbers, fill in any tests that may be missing
  65. # then extract the rate field
  66.     base=`basename $i`
  67.     (echo "     $n  "
  68.      echo '--------'
  69.      awk '$2 == "reps" || $2 == "trep" { \
  70.         line = $0; \
  71.         next; \
  72.         } \
  73.         NF == 0 && line != "" { \
  74.         print line; \
  75.         line=""; \
  76.         next; \
  77.         } \
  78.      ' $i > $tmp/$n.avg
  79.      fillblnk $tmp/$n.avg $tmp/labels |
  80.      sed 's/( *\([0-9]*\)/(\1/'   |
  81.      awk '$2 == "reps" || $2 == "trep" { \
  82.                          n = substr($6,2,length($6)-7); \
  83.                         printf "%8s\n", n; \
  84.                             }'
  85.     ) > $tmp/rates/$n
  86.     echo "$n: $i"
  87.     allfiles="$allfiles$tmp/rates/$n "
  88.     n=`expr $n + 1`
  89. done
  90. case x$ratio in
  91. x)
  92.     ratio=/bin/cat
  93.     ;;
  94. x1)
  95.     ratio="perfboth $n"
  96.     ;;
  97. *)
  98.     ratio="perfratio $n"
  99.     ;;
  100. esac
  101. echo ''
  102. (echo Operation; echo '---------'; cat $tmp/labels) |
  103. paste $allfiles - | sed 's/    /  /g' | $ratio
  104. rm -rf $tmp
  105.